package modelo.persistenciaArquivo;

import modelo.dominio.Cliente;
import java.io.IOException;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;


public class PersistenciaCliente {
      
	public static ArrayList<Cliente> listClientes = new ArrayList<Cliente>();
	
	//cadastro de cliente
	public void cadastroCliente(Cliente cliente) {
		this.listClientes.add(cliente);	
	}
	
	//lista de clientes
	public static ArrayList<Cliente> getListCliente() {
		return listClientes;
	}
	
	 // Consulta por um cliente recebendo o Nome
     public static Cliente consultaCliente(Cliente cliente) {
		int i;                
                
		for (i = 0; i < listClientes.size(); i++) {                        
                        
			if (listClientes.get(i).getNome().equals(cliente.getNome())) {
				return listClientes.get(i);
			}
		}
		return null; //Retorna Nulo caso não encontre
	}
	
        // Consulta por um cliente recebendo o Cpf
        public Cliente consultaClienteCpf(Cliente cliente) {
		int i;                
                
		for (i = 0; i < listClientes.size(); i++) {                        
                        
			if (listClientes.get(i).getCpf() == (cliente.getCpf())) {
				return listClientes.get(i);
			}
		}                
		return null; //Retorna Nulo caso não encontre
	}
        
	//carregar lista de cliente
	public boolean carregarCliente(ArrayList<Cliente> listClientes) throws IOException{
		String nome = "";
		long cpf;
		String endereco = "";
		String telefone = "";
		String linha;
		Cliente cliente;
		
		File fp = new File("Clientes.txt");
		
		if(!fp.exists()) {
			return false;
		}
		
		BufferedReader br = new BufferedReader(new FileReader(fp));
		
		while((linha = br.readLine())!= null) {
			String[] str = linha.split(";");
			
			nome = str[0];
			cpf = Long.parseLong(str[1]);
			endereco = str[2];
			telefone = str[3];
			Cliente novoCliente = new Cliente(nome, cpf, endereco, telefone);
			cadastroCliente(novoCliente);
			
		}
		br.close();
		return true;
	
	}
	
	
	//salvar cliente em arquivo
	public void salvarCliente(ArrayList<Cliente> listClientes) throws IOException {
		String nome;
		long cpf;
		String telefone;
		String endereco;
		
          BufferedWriter writer = new BufferedWriter(new FileWriter("Clientes.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		for(int i =0; i < listClientes.size(); i++) {
			nome = listClientes.get(i).getNome();
			cpf = listClientes.get(i).getCpf();
			telefone = listClientes.get(i).getTelefone();
			endereco = listClientes.get(i).getEndereco();
			writer.write(nome+";"+ cpf+";"+ endereco+";"+ telefone+"\n");
		}
		writer.close();
		output.close();
		
	}
	
	//acrescenta motorista em arquivo
	public void acrescentarCliente(Cliente cliente) throws IOException {
		
		BufferedWriter writer = new BufferedWriter(new FileWriter("Clientes.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		output.println(cliente.getNome() + ";"
		+ cliente.getCpf()+ ";"
		+ cliente.getTelefone()+ ";"
		+ cliente.getEndereco());
		writer.close();
		output.close();
		
	}
	
}
